home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 110 < prev    next >
Internet Message Format  |  1997-05-06  |  28KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-110
  3.  
  4. C.S.M.P. Digest             Sat, 16 Sep 95       Volume 3 : Issue 110
  5.  
  6. Today's Topics:
  7.  
  8.         Control action procedures
  9.         Errors in PowerPC section of Mac Game Gurus book
  10.         Implementing tear off menus? Where do I begin?
  11.         KillPicture or DisposeHandle?
  12.         New release of Chipmunk Basic
  13.         TransSkel 3.22 is available (Thread Manager support added)
  14.         [Q] How do I write a Photoshop plug-in?
  15.  
  16. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  17. (pottier@clipper.ens.fr).
  18.  
  19. The digest is a collection of article threads from the internet newsgroups
  20. comp.sys.mac.programmer.help, csmp.tools and csmp.misc. It is designed for
  21. people who read news semi-regularly and want an archive of the discussions.
  22. If you don't know what a newsgroup is, you probably don't have access to
  23. it. Ask your systems administrator(s) for details. If you don't have access
  24. to news, you may still be able to post messages to the group by using a
  25. mail server like anon.penet.fi (mail help@anon.penet.fi for more
  26. information).
  27.  
  28. Each issue of the digest contains one or more sets of articles (called
  29. threads), with each set corresponding to a 'discussion' of a particular
  30. subject.  The articles are not edited; all articles included in this digest
  31. are in their original posted form (as received by our news server at
  32. nef.ens.fr).  Article threads are not added to the digest until the last
  33. article added to the thread is at least two weeks old (this is to ensure that
  34. the thread is dead before adding it to the digest).  Article threads that
  35. consist of only one message are generally not included in the digest.
  36.  
  37. The digest is officially distributed by two means, by email and ftp.
  38.  
  39. If you want to receive the digest by mail, send email to listserv@ens.fr
  40. with no subject and one of the following commands as body:
  41.     help                                Sends you a summary of commands
  42.     subscribe csmp-digest Your Name     Adds you to the mailing list
  43.     signoff csmp-digest                 Removes you from the list
  44. Once you have subscribed, you will automatically receive each new
  45. issue as it is created.
  46.  
  47. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  48. Questions related to the ftp site should be directed to
  49. scott.silver@dartmouth.edu.
  50.  
  51. -------------------------------------------------------
  52.  
  53. >From ug930175@omega.scs.carleton.ca (Mark Suska)
  54. Subject: Control action procedures
  55. Date: Wed, 30 Aug 1995 01:50:21 GMT
  56. Organization: Carleton University
  57.  
  58. I am trying to get an action procedure for the scrollbar indicator to
  59. work. I have no problems getting the action procedures to work for other
  60. controls or other regions of the scrollbar. I know that the action
  61. procedure for indicators takes no parameters unlike the action procedures
  62. for other areas which take two parameters, the control handle and the part
  63. code.
  64. Right now the action procedure is called correctly the first time but the
  65. application exits immediately after returning from it.
  66. I've traced it with a debugger and can it seems to crash in the system
  67. code wich called my action procedure.
  68. Is there something special that you have to do in this action procedure? I
  69. don't return anything from the procedure, should I?
  70. Any suggestions as to what I am doing wrong?
  71.  
  72. Thanks for your help.
  73.  
  74. -- 
  75. Mark Suska,
  76. ug930175@omega.scs.carleton.ca
  77.  
  78. +++++++++++++++++++++++++++
  79.  
  80. >From Francois-Regis.Degott@imag.fr (F. Degott)
  81. Date: 30 Aug 1995 12:08:20 GMT
  82. Organization: LMC-IMAG Grenoble France
  83.  
  84. In article <ug930175-2908952150210001@1.1.1.1>,
  85. ug930175@omega.scs.carleton.ca (Mark Suska) wrote:
  86.  
  87. >I am trying to get an action procedure for the scrollbar indicator to
  88. >work. I have no problems getting the action procedures to work for other
  89. >controls or other regions of the scrollbar. I know that the action
  90. >procedure for indicators takes no parameters unlike the action procedures
  91. >for other areas which take two parameters, the control handle and the part
  92. >code.
  93. >Right now the action procedure is called correctly the first time but the
  94. >application exits immediately after returning from it.
  95. >I've traced it with a debugger and can it seems to crash in the system
  96. >code wich called my action procedure.
  97. >Is there something special that you have to do in this action procedure? I
  98. >don't return anything from the procedure, should I?
  99. >Any suggestions as to what I am doing wrong?
  100. >
  101.  
  102. Hi Mark,
  103. see the IM extract of Dialog Manager below, about TrackControl proc.
  104. it seems that the ActionProc must have two differents headers
  105. according to the type of control.
  106.  
  107. FUNCTION TrackControl (theControl: ControlHandle; startPt: Point;
  108.     actionProc: ProcPtr) : INTEGER;
  109.  
  110. [...]
  111.  
  112.     TrackControl may take additional actions beyond highlighting the
  113. control or dragging the indicator, depending on the value passed in the
  114. actionProc parameter, as described below. Here you'll learn what to 
  115. pass for the standard control types; for a custom control, what you
  116. pass will depend on how the control is defined.
  117.  
  118.       - If actionProc is NIL, TrackControl performs no additional
  119.         actions. This is appropriate for simple buttons, check boxes,
  120.         radio buttons, and the thumb of a scroll bar.
  121.       - ActionProc may be a pointer to an action procedure that defines
  122.         some action to be performed repeatedly for as long as the user
  123.         holds down the mouse button. (See below for details)
  124.       - If actionProc is POINTER(-1), TrackControl looks in the control
  125.         record for a pointer to the control's default action procedure. 
  126.         If that field of the control record contains a procedure
  127.         pointer, TrackControl uses the action procedure it points to; if
  128.         the field contains POINTER(-1), TrackControl calls the control
  129.         definition function to perform the necessary action. (If the
  130.         field contains NIL, TrackControl does nothing.)
  131.  
  132.     The action procedure in the control definition function is described
  133. in the section "Defining Your Own Controls". The following paragraphs
  134. describe only the action procedure whose pointer is passed in the
  135. actionProc parameter or stored in the control record.
  136.  
  137.     If the mouse button was pressed in an indicator, the action
  138. procedure (if any) should have no parameters. This procedure must allow
  139. for the fact that the mouse may not be inside the original control part.
  140.  
  141.     If the mouse button was pressed in a control part other than an
  142. indicator, the action procedure should be of the form
  143.  
  144.     PROCEDURE MyAction (theControl: ControlHandle; partCode: INTEGER);
  145.  
  146.     In this case, TrackControl passes the control handle and the part
  147. code to the action procedure. (It passes Ø in the partCode parameter if
  148. the mouse has moved outside the original control part.)  As an example
  149. of this type of action procedure, consider what should happen when the
  150. mouse button is pressed in a scroll arrow or paging region in a scroll
  151. bar. For these cases, your action procedure should examine the part
  152. code to determine exactly where the mouse button was pressed, scroll up
  153. or down a line or page as appropriate, and call SetCtlValue to change
  154. the control's setting and redraw the thumb.
  155.  
  156. (warning)
  157.     Since it has a different number of parameters depending
  158.     on whether the mouse button was pressed in an indicator
  159.     or elsewhere, the action procedure you pass to
  160.     TrackControl (or whose pointer you store in the control
  161.     record) can be set up for only one case or the other. If
  162.     you store a pointer to a default action procedure in a
  163.     control record, be sure it will be used only when
  164.     appropriate for that type of action procedure. The only
  165.     way to specify actions in response to all mouse-down
  166.     events in a control, regardless of whether they're in an 
  167.     indicator, is via the control definition function.
  168.  
  169. Hope this helps.
  170. Fr
  171. - -----------------------------------------------------------------------
  172. FR Degott (Francois-Regis.Degott@imag.fr)
  173. Lab. LMC-IMAG - UJF - Grenoble - France
  174. - -----------------------------------------------------------------------
  175.  
  176. +++++++++++++++++++++++++++
  177.  
  178. >From bb@lightside.com (Bob Bradley)
  179. Date: Wed, 30 Aug 1995 18:01:11 -0700
  180. Organization: SPC
  181.  
  182. In article <ug930175-2908952150210001@1.1.1.1>,
  183. ug930175@omega.scs.carleton.ca (Mark Suska) wrote:
  184.  
  185. >I am trying to get an action procedure for the scrollbar indicator to
  186. >work. I have no problems getting the action procedures to work for other
  187. >controls or other regions of the scrollbar. I know that the action
  188. >procedure for indicators takes no parameters unlike the action procedures
  189. >for other areas which take two parameters, the control handle and the part
  190. >code.
  191.  
  192. I posted a replacement for TrackControl that handles clicks in the thumb
  193. portion of the correctly (and uses the normal TrackControl for parts that
  194. it handles correctly). If you can't find it, leave me mail and I'll send
  195. it to you.
  196.  
  197. +++++++++++++++++++++++++++
  198.  
  199. >From ari@shore.net (Ari Halberstadt)
  200. Date: Thu, 31 Aug 1995 22:49:26 -0400
  201. Organization: North Shore Access/Eco Software, Inc; (info@shore.net)
  202.  
  203. In article <Francois-Regis.Degott-3008951412400001@harpie.imag.fr>,
  204. Francois-Regis.Degott@imag.fr (F. Degott) wrote:
  205.  
  206. >In article <ug930175-2908952150210001@1.1.1.1>,
  207. >ug930175@omega.scs.carleton.ca (Mark Suska) wrote:
  208. >
  209. >>I am trying to get an action procedure for the scrollbar indicator to
  210. >>work. I have no problems getting the action procedures to work for other
  211. >...
  212. >see the IM extract of Dialog Manager below, about TrackControl proc.
  213. >it seems that the ActionProc must have two differents headers
  214. >according to the type of control.
  215.  
  216. I use the following code to avoid this split-personality aspect of
  217. TrackControl. Anything with "ws" calls to my libs.
  218.  
  219. /* function passed to wsCtlTrack */
  220. typedef void (*wstControlTrack)(wstControl ctl,
  221.    wstInteger part, void *data);
  222.  
  223. /* data needed by mouse tracking call-back function */
  224. typedef struct {
  225.    wstControlTrack proc;
  226.    wstControl ctl;
  227.    wstInteger part;
  228.    void *data;
  229. } ControlTrackStructure;
  230.  
  231. /* global for access from action and indicator callbacks */
  232. static ControlTrackStructure *gTrack;
  233.  
  234. /* function passed to TrackControl for clicks in parts other than indicators */
  235. static pascal void CtlTrackAction(ControlHandle macctl, short part)
  236. {
  237.    #pragma unused (macctl)
  238.    ControlTrackStructure *track = gTrack;
  239.  
  240.    ws_check(wsCtlValid(track->ctl));
  241.    ws_check(track->proc != NULL);
  242.    track->proc(track->ctl, part, track->data);
  243. }
  244.  
  245. /* function passed to TrackControl for clicks in indicators */
  246. static pascal void CtlTrackIndicator(void)
  247. {
  248.    ControlTrackStructure *track = gTrack;
  249.    
  250.    ws_check(wsCtlValid(track->ctl));
  251.    ws_check(track->proc != NULL);
  252.    track->proc(track->ctl, track->part, track->data);
  253. }
  254.  
  255. /* ƒwsCtlTrack tracks the mouse in the control. The 'proc' parameter may
  256.    be a pointer to a function to call while the mouse is held down,
  257.    or it may be (ControlProcType)-1L, or NULL. The 'data' parameter
  258.    is passed to the function pointed to be the 'proc' parameter, and
  259.    may contain any application defined data. A control part code is
  260.    returned if the mouse is released in an active part of the control,
  261.    otherwise zero is returned. See the description of the Toolbox routine
  262.    TrackControl for more details. */
  263. wstInteger wsCtlTrack(wstControl ctl,
  264.    const wssPoint *where,
  265.    wstControlTrack proc,
  266.    void *data)
  267. {
  268.    static ControlActionUPP uppCtlTrackAction;   /* UPP for action function */
  269.    static DragGrayRgnUPP uppCtlTrackIndicator;  /* UPP for action function */
  270.    ControlTrackStructure track;  /* information for action function */
  271.    ControlHandle dummy;          /* dummy parameter for FindControl */
  272.    wstBoolean indicator;         /* true if clicked in indicator */
  273.    wssQDPoint qdpt;              /* point that was clicked */
  274.    wstInteger part;              /* part that was clicked */
  275.    wssPortState state;           /* saved state of port */
  276.    
  277.    ws_require(wsCtlValid(ctl));
  278.    if (! uppCtlTrackAction) {
  279.       uppCtlTrackAction = NewControlActionProc(CtlTrackAction);
  280.       wsThrowIfNull(uppCtlTrackAction);
  281.    }
  282.    if (! uppCtlTrackIndicator) {
  283.       /* see comment in <Controls.h>, it says to use a DragGrayRgnUPP */
  284.       uppCtlTrackIndicator = NewDragGrayRgnProc(CtlTrackIndicator);
  285.       wsThrowIfNull(uppCtlTrackIndicator);
  286.    }
  287.    if (wsCtlStyle(ctl) == wskCtlStylePopupMenu) {
  288.       /* it's a popup menu, so adjust the menus before it's selected */
  289.       wsEventMenuAdjust();
  290.    }
  291.    wsPointToQDPoint(where, &qdpt);
  292.    wsGPortSetup(wsPanePort(ctl->pane), &state);
  293.    if (proc != NULL && proc != (wstControlTrack) -1L) {
  294.       part = FindControl(qdpt, GetControlOwner(ctl->macctl), &dummy);
  295.       indicator = (part > 128);
  296.       track.ctl = ctl;
  297.       track.data = data;
  298.       track.proc = proc;
  299.       track.part = part;
  300.       ws_check(! gTrack);
  301.       gTrack = &track;
  302.       if (indicator)
  303.          part = TrackControl(ctl->macctl, qdpt, (ControlActionUPP)
  304. uppCtlTrackIndicator);
  305.       else
  306.          part = TrackControl(ctl->macctl, qdpt, uppCtlTrackAction);
  307.       gTrack = NULL;
  308.    }
  309.    else
  310.       part = TrackControl(ctl->macctl, qdpt, (ControlActionUPP) proc);
  311.    wsGPortRestore(wsPanePort(ctl->pane), &state);
  312.    return(part);
  313. }
  314.  
  315. Here's a little bonus :-)
  316.  
  317. /*---------------------------------------------------------------------------*/
  318. /* Definitions for Strict Controls (until Apple provides them) */
  319. /*---------------------------------------------------------------------------*/
  320.  
  321. #define ControlIsVisible(ctl)    (((**(ctl)).contrlVis) != 0)
  322. #define GetControlHilite(ctl)    ((**(ctl)).contrlHilite)
  323. #define GetControlData(ctl)      ((**(ctl)).contrlData)
  324. #define GetControlRect(ctl, r)   ((void) ((*r) = (**(ctl)).contrlRect))
  325. #define GetControlOwner(ctl)     ((**(ctl)).contrlOwner)
  326. #define GetControlProc(ctl)      ((**(ctl)).contrlDefProc)
  327.  
  328. -- Ari Halberstadt (ari@shore.net)
  329.  
  330. ---------------------------
  331.  
  332. >From english@primenet.com (Lawson English)
  333. Subject: Errors in PowerPC section of Mac Game Gurus book
  334. Date: 2 Sep 1995 10:09:36 GMT
  335. Organization: Primenet (602)395-1010
  336.  
  337. Well, I was all excited when I picked up _Tricks of the Mac Game 
  338. Programming Gurus_. Overall, it does look like a nice book.
  339.  
  340.  
  341. However, there are some rather BAD errors in the chapter on PowerPC 
  342. optimization. There are errors of fact (e.g. "low-end PowerPC's have 5 
  343. instructional units that can work simultaneously and complete up to three 
  344. instructions per cycle") and errors in interpreting timing information.
  345.  
  346. The chapter applies this misinterpretation to optimizing a full-screen 
  347. blit without even providing an optimized CopyBits version as a benchmark, 
  348. and thereby hangs the tale...
  349.  
  350.  
  351. The author of the chapter asserts that double floating point stores take 3 
  352. cycles to complete. This is *best* case and doesn't apply when all loads 
  353. and stores are done using the same  floating point register in a 
  354. massively-unrolled loop.
  355.  
  356.  
  357. The author is excited by the fact that one can get a 3% increase in speed 
  358. by unrolling the blitting loop so that a full scanline is blitted per 
  359. iteration of the loop (i.e. 80 in-line instructions).
  360.  
  361.  
  362. No attempt at pipelining by using multiple registers is discussed or 
  363. attempted. No mention of any possible assembly-level optimizations 
  364. (e.g. touching the cache) is made. No discussion of the branch prediction 
  365. unit and how that effects unrolling of loops is made. No discussion of 
  366. how the slow speed of the VRAM video bus justifies using the slower 
  367. double load/store-based blitting instead of the the theoretically faster 
  368. integer load/store. The author also somehow misreads the timing of the 
  369. double load and assumes that it is identical to the double store, and 
  370. that one can simply add instructions' cycle times to calculate the time 
  371. it takes to execute a given instruction stream.
  372.  
  373. Nor is any discussion made of how these issues might change with the 604 CPU.
  374.  
  375. Nor is any discussion made of how to determine whether a video card with 
  376. accelerated blitting might be faster, so that Apple's CopyBits (which 
  377. transparently uses hardware-based blitters, as I recall) might be the 
  378. better bet.
  379.  
  380. Since the author never times CopyBits, we can't even see how his/her 
  381. "optimized" version does against Apple's own. I suspect that Apple's generic 
  382. blitter can do better than the author's hand "optimized" one.
  383.  
  384. I'm the first to admit that I don't understand the PowerPC optimization  
  385. issues all that well, but the author appears (to my limited 
  386. understanding) to be even more clueless than I.
  387.  
  388. Disappointing, to say the least. Hopefully the rest of the book is more 
  389. fact-full...
  390.  
  391.  
  392.  
  393. --
  394. - -----------------------------------------------------------------------------
  395. Lawson English                            __  __     ____  ___       ___ ____
  396. english@primenet.com                     /__)/__) / / / / /_  /\  / /_    /
  397.                                         /   / \  / / / / /__ /  \/ /___  /
  398. - -----------------------------------------------------------------------------
  399.  
  400. ---------------------------
  401.  
  402. >From "Stephen E. Maas" <do485@cwru.edu>
  403. Subject: Implementing tear off menus? Where do I begin?
  404. Date: Mon, 28 Aug 1995 19:13:29 GMT
  405. Organization: Maasware Enterprises
  406.  
  407. Where do I start looking for information implementing global tear off 
  408. menus? Was there a tech. note written on the subject? Are there any 
  409. files or code examples out there documenting how it is done? I am not 
  410. asking for help yet, just a nudge in the proper direction. Thanks.
  411.  
  412.  
  413.  
  414.  
  415. +++++++++++++++++++++++++++
  416.  
  417. >From samny@nyc.pipeline.com (Ed Samuels)
  418. Date: 29 Aug 1995 00:43:31 -0400
  419. Organization: The Pipeline
  420.  
  421. In article <DE1Bzz.4ry@news.cis.umn.edu>, Stephen E. Maas writes: 
  422.  
  423. >Organization: Maasware Enterprises 
  424. >Mime-Version: 1.0 
  425. >Date: Mon, 28 Aug 1995 19:13:29 GMT 
  426. >X-Mailer: Mozilla 1.1N (Macintosh; I; 68K) 
  427. >X-Url: news:comp.sys.mac.programmer.help 
  428. >Lines: 7 
  429. >Where do I start looking for information implementing global tear off  
  430. >menus? Was there a tech. note written on the subject? Are there any  
  431. >files or code examples out there documenting how it is done? I am not  
  432. >asking for help yet, just a nudge in the proper direction. Thanks. 
  433.  
  434. I'd recommend creating your own MDEF, a menu definition procedure, instead
  435. of that complicated custom-font thing that Hypercard and the TCL use.
  436. Divide the menu up into rectangles with pictures in them (with something
  437. like an 'nrct' resource) and track as the user moves the mouse over those
  438. rectangles. When the user tracks outside of the menu + a certain border,
  439. start dragging the tear-off around, and finish by posting an apple event to
  440. your application to move the tear-off palette to that location. For info
  441. about writing MDEFs, look at the New Inside Mac:Mac Toolbox Essentials,
  442. page 3-87. 
  443.  
  444. - --------------------------------------------------------------------------------------------------- 
  445.  
  446. Richard Samuels    
  447. samny@nyc.pipeline.com
  448.  
  449. +++++++++++++++++++++++++++
  450.  
  451. >From kenlong@netcom.com (Ken Long)
  452. Date: Tue, 29 Aug 1995 14:21:47 GMT
  453. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  454.  
  455. Stephen E. Maas (do485@cwru.edu) wrote:
  456. : Where do I start looking for information implementing global tear off 
  457. : menus? Was there a tech. note written on the subject? Are there any 
  458. : files or code examples out there documenting how it is done? I am not 
  459. : asking for help yet, just a nudge in the proper direction. Thanks.
  460.  
  461. ftp ftp.info.apple.com, the DTS.Draw source, for one.  Also, Nigel 
  462. Perry's "Pictoid" source has something similar (don't know if it tears off).
  463.  
  464. There's an init or control panel that implements global tear-offs 
  465. already.  "Why code it if somebody already wrote it" is a time and 
  466. trouble saving maxim.
  467.  
  468. -Ken-
  469.  
  470. ---------------------------
  471.  
  472. >From altitude@petrified.cic.net (Alex Tang)
  473. Subject: KillPicture or DisposeHandle?
  474. Date: 31 Aug 1995 16:28:03 GMT
  475. Organization: University of Michigan
  476.  
  477. sorry if this is a newbie question....
  478.  
  479. When drawing picts using:
  480.  
  481. hPict = PicHandle ( NewHandle ( nDataLength ) );
  482. FSRead ( nFileRef, &nCount, ( Ptr ) *hPict );
  483. HLock ( ( Handle ) hPict );
  484. DrawPicture ( hPict, &rectPict );
  485. HUnLock ( ( Handle ) hPict );
  486.  
  487. should i use DisposeHandle() or KillPicture() to finish up.
  488.  
  489. Thanx.
  490. ...alex...
  491.  
  492. +++++++++++++++++++++++++++
  493.  
  494. >From andrewwelc@aol.com (AndrewWelc)
  495. Date: 31 Aug 1995 13:22:16 -0400
  496. Organization: America Online, Inc. (1-800-827-6364)
  497.  
  498. > should i use DisposeHandle() or KillPicture() to finish up.
  499.  
  500. Either -- KillPicture just calls DisposeHandle() anyway (and does nothing
  501. else).
  502.  
  503. Regards,
  504.  
  505. Andrew Welch
  506. Thaumaturgist
  507. Ambrosia Software, Inc.
  508.  
  509. ..........
  510.  
  511. For the latest versions of our software, technical support, and Ambrosia
  512. news, stop by and visit the Ambrosia Software, Inc. support forums:
  513.  
  514. America Online ---> Keyword: Ambrosia
  515.     CompuServe ---> GO word: Ambrosia
  516.         eWorld --> Shortcut: Ambrosia
  517. >From altitude@petrified.cic.net (Alex Tang)
  518.  
  519. ---------------------------
  520.  
  521. >From Ron Nicholson <rhn@sgi.com>
  522. Subject: New release of Chipmunk Basic
  523. Date: 29 Aug 1995 01:12:05 GMT
  524. Organization: Silicon Graphics, Inc.
  525.  
  526. I'm not sure how many c.s.m.p folks still consider writing stuff in the
  527. BASIC language as a form of programming...
  528.  
  529. But, in case you're still one of the few, there's a new release of
  530. Chipmunk Basic, vers. 3.2.1.   It's a bug fix release with a few minor
  531. enhancements.
  532.  
  533. Already in the Info-Mac archives and also here:
  534. <ftp://ftp.rahul.net/pub/rhn/chipmunk-basic-321.hqx>
  535.  
  536. Looks like Chipmunk Basic may soon be obsoleted by the rumored "Kenobi"
  537. and "Danali" implementations.
  538.  
  539. - -
  540. Ronald H. Nicholson, Jr.                rhn@engr.sgi.com, rhn@netcom.com
  541. #include <canonical.disclaimer>         // I speak only for myself, etc.
  542.  
  543.  
  544. ---------------------------
  545.  
  546. >From dubois@night.primate.wisc.edu (Paul DuBois)
  547. Subject: TransSkel 3.22 is available (Thread Manager support added)
  548. Date: 1 Sep 1995 12:10:41 -0500
  549. Organization: UW-Madison Primate Center
  550.  
  551. Release 3.22 of TransSkel, a skeleton for Macintosh application development
  552. under MetroWerks C or Pascal or Symantec C++/THINK C, is now available.
  553.  
  554. This is an update release; it provides Thread Manager support.
  555. It also fixes a bug so that the TransSkel library correctly knows
  556. the application is suspended when launched directly into the
  557. background.
  558.  
  559. Thread Manager support and the bugfix were both contributed by
  560. Hans van der Meer, hansm@fwi.uva.nl.  My thanks to him.
  561.  
  562. TransSkel is available via any of the following:
  563.  
  564. anonymous ftp to ftp.primate.wisc.edu (under /pub/mac/TransSkel)
  565.  
  566. gopher to gopher.primate.wisc.edu, then select "Primate Center Software
  567. Archives")
  568.  
  569. WWW using URL http://www.primate.wisc.edu/software/mac/TransSkel/
  570. -- 
  571. Paul DuBois
  572. dubois@primate.wisc.edu
  573. Home page: http://www.primate.wisc.edu/homepage/dubois
  574.  Software: http://www.primate.wisc.edu/software
  575.  
  576. ---------------------------
  577.  
  578. >From bmw@ccnet.com (Brett M. Wayne)
  579. Subject: [Q] How do I write a Photoshop plug-in?
  580. Date: 30 Aug 1995 16:40:17 GMT
  581. Organization: Initial Point Software
  582.  
  583.  
  584. I am working on a ground station support package for a spacecraft that
  585. has as part or its sensor suite, several imaging sensors. The ground
  586. station
  587. is being developed on a Silicon Graphics workstation so I'm not at a loss
  588. for compute cycles.
  589.  
  590. My current path to getting processed imagery into finished documents is to 
  591. translate the raw imagery into some standard format (i.e. TIFF, GIF, etc. )
  592.  
  593. before I pull them into Photoshop. The main problem with this is that I
  594. lose 
  595. all of the non-pixel meta-data in the translation.  It would be neat
  596. if I could write a simple Photoshop plug-in that would enable me to
  597. import/export the images in their native, definitely non-standard format.
  598.  
  599. I'm not a newbie to Mac programming. I've programmed using both
  600. Codewarrier,
  601. and Symmantec C++/TCL, Resedit, Resorcerer, etc.  If anyone has had
  602. experience
  603. doing this, I'd greatly appreciate pointers to references, additional tools
  604. required, etc.
  605.  
  606.  
  607. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  608. Brett M. Wayne
  609. University of California
  610. Lawrence Livermore National Laboratory
  611. wayne1@llnl.gov
  612.  
  613. +++++++++++++++++++++++++++
  614.  
  615. >From kemper@ucssun1.sdsu.edu (kemper)
  616. Date: 31 Aug 1995 04:37:36 GMT
  617. Organization: San Diego State University Computing Services
  618.  
  619.  
  620. Adobe's plugin architecture for Photoshop is on the the CW CD.  You
  621. can also join their developer's program for more info, or buy one
  622. of their special CD thingies =).
  623.  
  624.  
  625. Brett M. Wayne (bmw@ccnet.com) wrote:
  626.  
  627. : I am working on a ground station support package for a spacecraft that
  628. : has as part or its sensor suite, several imaging sensors. The ground
  629. : station
  630. : is being developed on a Silicon Graphics workstation so I'm not at a loss
  631. : for compute cycles.
  632.  
  633. : My current path to getting processed imagery into finished documents is to 
  634. : translate the raw imagery into some standard format (i.e. TIFF, GIF, etc. )
  635.  
  636. : before I pull them into Photoshop. The main problem with this is that I
  637. : lose 
  638. : all of the non-pixel meta-data in the translation.  It would be neat
  639. : if I could write a simple Photoshop plug-in that would enable me to
  640. : import/export the images in their native, definitely non-standard format.
  641.  
  642. : I'm not a newbie to Mac programming. I've programmed using both
  643. : Codewarrier,
  644. : and Symmantec C++/TCL, Resedit, Resorcerer, etc.  If anyone has had
  645. : experience
  646. : doing this, I'd greatly appreciate pointers to references, additional tools
  647. : required, etc.
  648.  
  649.  
  650. : -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  651. : Brett M. Wayne
  652. : University of California
  653. : Lawrence Livermore National Laboratory
  654. : wayne1@llnl.gov
  655.  
  656. +++++++++++++++++++++++++++
  657.  
  658. >From phixus@deltanet.com (Chris De Salvo)
  659. Date: Thu, 31 Aug 1995 01:15:42 -0700
  660. Organization: MacPlay
  661.  
  662. In article <bmw-300895092706@h98-148.ccnet.com>, bmw@ccnet.com (Brett M.
  663. Wayne) wrote:
  664.  
  665. > before I pull them into Photoshop. The main problem with this is that I
  666. > lose 
  667. > all of the non-pixel meta-data in the translation.  It would be neat
  668. > if I could write a simple Photoshop plug-in that would enable me to
  669. > import/export the images in their native, definitely non-standard format.
  670.  
  671. At any of the Info-Mac mirros you can find the Photoshop Developers Kit. 
  672. It includes sample source for import and export plug-ins.  In the Info-Mac
  673. hierarchy it is at:
  674.  
  675.    _Development
  676.          _Library
  677.                photoshop-kit.hqx>
  678.  
  679. Good luck,
  680. Chris
  681.  
  682. -- 
  683. +-----------------------------------------------------------------+
  684. | phixus@deltanet.com         |   Macintosh:  Changing the world, |
  685. | Chris De Salvo              |        one person at a time!      |
  686. | Professional Mac Geek       |    -----------------------------  |
  687. | for MacPlay, Inc.           |      (I wish they'd hurry up!)    |
  688. +-----------------------------------------------------------------+
  689.  
  690. Any opinions expressed, or implied, are my own!  They should not be
  691. considered representative of the opinions or policies of my employer,
  692. MacPlay, a division of Interplay Productions, Inc.
  693.  
  694. +++++++++++++++++++++++++++
  695.  
  696. >From Darren Giles <mars@netcom.com>
  697. Date: Thu, 31 Aug 1995 08:21:29 GMT
  698. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  699.  
  700. Adobe has a SDK for Photoshop plug-ins.  Believe it or not,
  701. it's already on the CodeWarrior CD.  You could also check their
  702. WWW site (http://www.adobe.com/), or give 'em a call.
  703.  
  704. Best of luck!
  705.  
  706. - Darren
  707.  
  708. ==========================================================================
  709. Darren Giles, Technical Director                           mars@netcom.com
  710. Terran Interactive                               http://www.terran-int.com
  711.  
  712.  
  713. ---------------------------
  714.  
  715. End of C.S.M.P. Digest
  716. **********************
  717.